home *** CD-ROM | disk | FTP | other *** search
/ Power CD / Power CD ATARI-Rechner Lieben.iso / UTILITY / RAUR1_20 / RSC_READ.ME < prev   
Encoding:
Text File  |  1989-06-16  |  6.4 KB  |  161 lines

  1.  
  2.  
  3.                                                  Bedburg,den 15.04.1989
  4.  
  5.                RESOURCE - ANALYSER UND REASSEMBLER   V1.20
  6.  
  7.  
  8. DIESES PROGRAMM IST PUBLIC DOMAIN UND DARF BELIEBIG KOPIERT UND WEITERGEGEBEN
  9. WERDEN.
  10. ALLE ZUM PROGRAMM GEHÖRENDEN DATEIEN MÜSSEN SICH IM ORDNER 'R_A_U_R1.20' AUF
  11. DEM LAUFWERK BEFINDEN VON DEM AUCH GFA-BASIC ODER DER BEILIEGENDE RUN-ONLY-
  12. INTERPRETER GESTARTET WIRD!
  13. DAS ERZEUGTE REASSEMBLERLISTING WIRD IN DIE ROOT DES LAUFWERKS GESCHRIEBEN
  14. UND HAT IMMER DIE BEZEICHNUNG 'RSC_QUEL.Q'.
  15.  
  16. Da ich davon ausgehe, daß Leute,die RSC-Files analysieren und/oder in Assembler
  17. programmieren, dies nicht mit einem Farbmonitor (iiiih !!) tun, habe ich mir 
  18. auch nicht die Mühe gemacht, dieses Programm an eine andere als die HOHE AUF-
  19. LÖSUNG anzupassen.
  20.  
  21. Das Programm ist dazu gedacht, bestehende RSC-Files zu analysieren und/oder zu
  22. reassemblieren, um einen lesbaren Quelltext zu erhalten.
  23. Diesen Quelltext kann man entweder direkt in ein Programm einbinden oder
  24. bearbeiten und erneut assemblieren, um zu kürzeren RSC-Files zu gelangen.
  25.  
  26. Das Programm erstellt Quelltexte für den Profimat ©  und den GFA-Assembler ©.
  27. Mit kleinen Änderungen müßten die Quelltexte aber auf jedem Assembler zu
  28. verarbeiten sein, der mehr als 8 Zeichen für Labels erlaubt.
  29.  
  30. Beim GFA - Assembler ist es mir bisher noch nicht gelungen, mit dem Linker
  31. ein Binär-File zu erstellen. Immer bricht der Linker mit einer Fehlermeldung
  32. "ungerade Adresse" ab.
  33.  
  34. Die Assemblierung mit dem Profimat mit der Option *.B ergibt im Allgemeinen 
  35. keinerlei Probleme, bis auf die Fehlermeldung 'Puffer voll' bei zu vielen und
  36. zu langen Strings. Die erzeugten Files sind aber immer um 8 Bytes zu lang,
  37. sodaß sie um diese Anzahl Bytes gekürzt werden müssen.(4 Bytes beim GFA -
  38. Assembler)
  39.  
  40. Um trotzdem zu einem neuen RSC-File zu kommen habe ich mich bisher eines
  41. kleinen Tricks bedient.
  42. Ich erzeuge mit dem Assembler zuerst eine normale Programmdatei(natürlich
  43. ohne die Optimierungs-Optionen), die ich mir dann mit einem Monitorprogramm 
  44. in den Speicher ziehe und ohne Header und anhängende Leerbytes (4 Nullbytes
  45. bzw. 8 ) wieder auf die Diskette schiebe.
  46.  
  47. Den gleichen Erfolg erziehlt man auch mit BLOAD und BSAVE in Basic.
  48. Folgendes kleine Programm kann dabei helfen:
  49.  
  50.     DIM feld%(66000/4)                    ! PLATZ AUCH FÜR DAS LÄNGSTE RSC-FILE
  51.     adr%=V:feld%(0)
  52.     OPEN "I",#1,"RSC_QUEL.PRG"            ! ERZEUGTES ASSEMBLERPROGRAMM
  53.     len%=LOF(#1)                          ! LÄNGE ERFRAGEN
  54.     CLOSE #1
  55.     BLOAD "RSC_QUEL.PRG",adr%             ! PROGRAMM ALS BLOCK LADEN
  56.                                           ! UND WIEDER ABSPEICHERN
  57.     BSAVE "RSC_QUEL.RSC",adr%+28,len%-32  ! - HEADER + 4 LEERBYTES AM ENDE
  58.                                 (len%-36) ! FÜR PROFIMAT              
  59.     END
  60.  
  61. Vieleicht kann mir ja mal einer den Trick mit dem Linker verraten.
  62.  
  63. Die so erzeugten RSC-Files laufen einwandfrei und können auch wieder in ein
  64. RSC-Construction Set eingeladen werden. Alle Änderungen gehen dabei natürlich 
  65. verloren.
  66.  
  67.  
  68.  
  69.  
  70.  ICONBLK-Struktur:
  71.  
  72. In allen Dokumentationen wird angegeben, daß die ICONBLK-Struktur 36 Bytes
  73. umfast und das letzte Word IB_RESVD = 0 sein muß.
  74. In allen untersuchten RSC-Files (auch die im ROM meines Rechners) besteht diese
  75. Struktur jedoch immer nur aus 34 Bytes, sodaß ich davon ausgehe, daß dieses 
  76. Word vernachlässigt werden kann. Wird dieses Word jedoch mitgeschrieben, so 
  77. verlängert sich das neue File pro Icon um 2 Byte.
  78.  
  79.  OB_FLAGS:
  80.  
  81. Das OB_flag "Indirect" wird von diesem Programm nicht ausgewertet.
  82.  
  83.     1.) weil eine vernünftige Anwendung diese Flags für mich nicht erkennbar
  84.         ist.
  85.     2.) weil dieses Flag von allen mir bekannten RSC-Construction-Sets nicht
  86.         gesetzt werden kann. Bisher ist mir auch noch kein RSC-File unter-
  87.         gekommen, in dem diese Flag gesetzt war.
  88.  
  89. Files, in denen dieses Flag Verwendung findet, können deshalb nicht korrekt
  90. bearbeitet werden.
  91.  
  92. Flags, die nicht von DR dokumentiert sind und deshalb von Construction Set zu
  93. Construction Set unterschiedlich gesetzt und interpretiert werden, kann dieses
  94. Programm natürlich auch nicht bearbeiten,weil es ihren Sinn nicht erraten kann.
  95. Diese Flags werden zwar als gesetzt erkannt, im Programm aber als "unbekannte
  96. Flags" ausgewiesen. Je nach Sinn dieser Flags, kann es zu Fehlverhalten des
  97. Programms kommen.(muß es aber nicht)
  98.  
  99.  
  100.  OB_STATE:
  101.  
  102. Die Status-Flags "DRAW3D" und "WHITEBAK", die erst ab GEM 2.0 implementiert
  103. sind werden erkannt und angezeigt.
  104.  
  105.  
  106.  USERBLOCK-STRUKTUR:
  107.  
  108. Nach allen meinen bisherigen Erkenntnissen kann diese Struktur erst bei Lauf-
  109. zeit des Programms erzeugt werden, sodaß sich eine Einbindung für mich er-
  110. übrigte.Diese Struktur wird also nicht unterstützt.
  111.  
  112.  
  113. Die Ausgabe der Objektbäume auf dem Bildschirm kann mit der ESC-Taste jederzeit
  114. abgebrochen werden. Bei der Ausgabe der freien Strings und Images funktioniert
  115. dies nicht.
  116.  
  117. WAS NATÜRLICH NICHT FUNKTIONIEREN KANN, IST DIE RICHTIGE DRUCKERAUSGABE VON 
  118. STEUERZEICHEN, DIE IN STRINGS ENTHALTEN SIND ODER AUCH FÜR SONDERZEICHEN, FÜR
  119. DIE DER DRUCKER NICHT ANGEPAßT IST. (Z.B. ≤,⇨,·,⌠)
  120.  
  121.  
  122. Nun noch ein Wort die Assemblerbenutzer:
  123.  
  124. Beim Assemblieren (speziell der ROM-RSC Daten) kann es schon mal vorkommen,daß
  125. die Fehlermeldung "Label nicht definiert" (oder etwas Ähnliches) erscheint.
  126. Dies hat seine Ursache in der Verwendung von 'Hochkommata' im String, was kein 
  127. Assembler mag. Ersetzt man die Hochkommas durch den entsprechenden ASCII-Code,
  128. so gibt der Assembler Ruhe.
  129.  
  130. Für alle, die sich einmal die RSC-Files im ROM anschauen wollen die Adressen:
  131.  
  132.            ROM-TOS vom                             BLITTER-TOS 1.2
  133.            06.02.1986                               
  134.       
  135.              $FD49C2                                   $FD5BEC
  136.              $FD5D10                                   $FD6E06
  137.              $FD89D6                                   $FD977A
  138.  
  139.  
  140. DIE REASSEMBLIERUNG VON RSC-FILES AUS DEN ROM'S FUNKTIONIERT NICHT KORREKT, 
  141. DA DIESE VON HAND ÜBERARBEITET SIND UND TABELLEN ENTHALTEN, DEREN BEDEUTUNG 
  142. MIR UNBEKANNT SIND.
  143.  
  144.  
  145.  
  146. Für jede Anregung und Kritik an meiner Arbeit bin ich dankbar, denn nichts ist
  147. so gut, daß es nicht verbesserungsfähig wäre.
  148.  
  149.          Meine Adresse: Heinz Lurz
  150.                         Schützendelle 63
  151.                         5012 Bedburg
  152.  
  153.  
  154.                         Dann viel Spass mit dem Programm
  155.  
  156.                          
  157.  
  158.  
  159.  
  160.  
  161.